package com.atwulidun.memento18;

public class MementoDemo {
    public static void main(String[] args) {
        // 创建一个CareTaker
        CareTaker careTaker = new CareTaker();
        // 创建两个被记录状态的对象
        Originator originator1 = new Originator("张三", "对象1状态1");
        Originator originator2 = new Originator("李四", "对象2状态1");
        // 将对象1的三个状态加入到careTaker中
        // 先加对象1的状态1
        careTaker.addMemento(originator1, originator1.save());
        // 设置对象1的状态2，并加入到careTaker中
        originator1.setState("对象1状态2");
        careTaker.addMemento(originator1, originator1.save());
        // 设置对象1的状态3，并加入到careTaker中
        originator1.setState("对象1状态3");
        careTaker.addMemento(originator1, originator1.save());

        // 将对象2的三个状态加入到careTaker中
        // 先加对象2的状态1
        careTaker.addMemento(originator2, originator2.save());
        // 设置对象2的状态2，并加入到careTaker中
        originator2.setState("对象2状态2");
        careTaker.addMemento(originator2, originator2.save());
        // 设置对象2的状态3，并加入到careTaker中
        originator2.setState("对象2状态3");
        careTaker.addMemento(originator2, originator2.save());

        // 输出两个对象当前的状态
        System.out.println("对象1当前状态为：" + originator1.getState());
        System.out.println("对象2当前状态为：" + originator2.getState());

        // 将对象1恢复到状态1
        originator1.recover(careTaker.getMap().get(originator1.getDes()).get(0));
        System.out.println("对象1恢复后的状态为：" + originator1.getState());
        // 将对象2恢复到状态2
        originator2.recover(careTaker.getMap().get(originator2.getDes()).get(1));
        System.out.println("对象2恢复后的状态为：" + originator2.getState());
    }
}
